package cn.gtlc.util;

import java.util.concurrent.ThreadLocalRandom;

/**
 * @Description 随机数生成器
 * @Author Jowin
 * @Date 2023/6/2
 * @Version -
 */
public class RandomGeneratorUtils {
    ThreadLocalRandom random = ThreadLocalRandom.current();

    /**
     * 生成n位十进制随机数据
     *
     * @param n
     * @return
     */
    private String genDecimalRandom(int n) {
        String ret = "";
        for (int i = 0; i < n; i++) {
            int k = random.nextInt(10);
            ret += k;
        }
        return ret;
    }

    /**
     * 生成n位十六进制随机数
     *
     * @param n
     * @return
     */
    private String genHexRandom(int n) {
        String hexArr[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
        String ret = "";
        for (int i = 0; i < n; i++) {
            int k = random.nextInt(hexArr.length);
            ret += hexArr[k];
        }
        return ret;
    }

    /**
     * 生成n位随机数(含大小写字、数字)
     *
     * @param n
     * @return
     */
    private String genPwdRandom(int n) {
        String hexArr[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
        String ret = "";
        for (int i = 0; i < n; i++) {
            int k = random.nextInt(hexArr.length);
            ret += hexArr[k];
        }
        return ret;
    }

    // 生成随机数据
    public static void main(String[] args) {
        int num = 32; // 随机数位数
        System.out.println("生成" + num + "位十六进制随机数：" + new RandomGeneratorUtils().genHexRandom(num));
        System.out.println("生成" + num + "位十进制随机数：" + new RandomGeneratorUtils().genDecimalRandom(num));
        for (int i = 0; i < 5; i++) {
            System.out.println("生成" + num + "位随机数密码" + (i+1) + "：" + new RandomGeneratorUtils().genPwdRandom(num));
        }
    }
}
